"""
设计4个类：GrandSon   Son1   Son2   Parent
关系：      孙子     儿子1   儿子2    父亲
"""


class Parent(object):
    def __init__(self, height):
        print("这是Parent类")
        self.height = height


class Son1(Parent):
    def __init__(self, age, *args):
        print("这是Son1类")
        self.age = age
        super().__init__(*args)


class Son2(Parent):
    def __init__(self, score, *args):  # 为避免多继承报错，使用不定长参数，接受参数
        print("这是Son2类")
        self.score = score
        super().__init__(*args)


class GrandSon(Son1, Son2):
    def __init__(self, name, *args):  # 将后面的位置参数传递给父类的初始化方法
        print("这是GrandSon类")
        # 多继承时，相对于使用类名.__init__方法，要把每个父类全部写一遍
        # 而super只用一句话，执行了全部父类的方法，这也是为何多继承需要全部传参的一个原因
        self.name = name
        super().__init__(*args)

    def __str__(self):
        return f"我是{self.name},年龄{self.age},分数{self.score},身高{self.height}"


if __name__ == '__main__':
    parent = GrandSon("小明", 23, 431, 173)
    print(parent)
    print(GrandSon.__mro__)
    # (<class '__main__.GrandSon'>, <class '__main__.Son1'>, <class '__main__.Son2'>, <class '__main__.Parent'>, <class 'object'>)
